home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / program / misc / disectv1.lha / tutorial / Program.s < prev    next >
Text File  |  1995-07-12  |  3KB  |  168 lines

  1. * ------------------------------------------------------------------------- *
  2.  
  3.     INCLUDE    "ram:Support.s"
  4.  
  5. * ------------------------------------------------------------------------- *
  6.  
  7. * Disect V1.6 Disassembly:
  8. * ------------------------
  9.  
  10.  
  11.  
  12. * ------------------------------------------------------------------------- *
  13.  
  14. ; Disassembly of 'KeepASL' - DMA 1.10.94
  15.  
  16. main    move.l    (EXEC_BASE).w,sys_base
  17.  
  18.     bsr.w    start_up        ; WB/CLI start up
  19.  
  20.     lea.l    int_name(pc),a1    ; open intuition
  21.     moveq.l    #$0,d0
  22.     movea.l    sys_base(pc),a6
  23.     jsr    _LVOOpenLibrary(a6)
  24.     move.l    d0,int_base
  25.     beq.w    exit
  26.  
  27.     lea.l    asl_name(pc),a1    ; open ASL
  28.     moveq.l    #$0,d0
  29.     movea.l    sys_base(pc),a6
  30.     jsr    _LVOOpenLibrary(a6)
  31.     move.l    d0,asl_base
  32.     beq.b    exit
  33.  
  34.     lea.l    clip_name(pc),a0    ; open clipboard
  35.     lea.l    clip_iorq(pc),a1
  36.     moveq.l    #$0,d0
  37.     moveq.l    #$0,d1
  38.     movea.l    sys_base(pc),a6
  39.     jsr    _LVOOpenDevice(a6)
  40.     tst.l    d0
  41.     bne.b    exit
  42.     st.b    clip_flag
  43.  
  44.     lea.l    newwind0(pc),a0    ; open window
  45.     movea.l    int_base(pc),a6
  46.     jsr    _LVOOpenWindow(a6)
  47.     move.l    d0,window_p
  48.     beq.b    exit
  49.  
  50.     movea.l    window_p(pc),a0    ; wait for window
  51.     movea.l    wd_UserPort(a0),a2    ; close message
  52.  
  53. .wait_loop    movea.l    a2,a0
  54.     movea.l    sys_base(pc),a6
  55.     jsr    _LVOWaitPort(a6)
  56.  
  57.     movea.l    a2,a0
  58.     movea.l    sys_base(pc),a6
  59.     jsr    _LVOGetMsg(a6)
  60.     tst.l    d0
  61.     beq.b    .wait_loop
  62.  
  63.     movea.l    d0,a1
  64.     movea.l    sys_base(pc),a6
  65.     jsr    _LVOReplyMsg(a6)
  66.  
  67. exit    move.l    window_p(pc),d0    ; close window
  68.     beq.b    .no_window
  69.     movea.l    d0,a0
  70.     movea.l    int_base(pc),a6
  71.     jsr    _LVOCloseWindow(a6)
  72.  
  73. .no_window    tst.b    clip_flag        ; close clipboard
  74.     beq.b    .no_clip
  75.     clr.b    clip_flag
  76.     lea.l    clip_iorq(pc),a1
  77.     movea.l    sys_base(pc),a6
  78.     jsr    _LVOCloseDevice(a6)
  79.  
  80. .no_clip    move.l    asl_base(pc),d0    ; close ASL
  81.     beq.w    .no_asl
  82.     movea.l    d0,a1
  83.     movea.l    sys_base(pc),a6
  84.     jsr    _LVOCloseLibrary(a6)
  85. .no_asl    clr.l    asl_base
  86.  
  87.     move.l    int_base(pc),d0    ; close intuition
  88.     beq.w    .no_int
  89.     movea.l    d0,a1
  90.     movea.l    sys_base(pc),a6
  91.     jsr    _LVOCloseLibrary(a6)
  92. .no_int    clr.l    int_base
  93.  
  94.     bsr.w    close_down
  95.  
  96.     moveq.l    #$0,d0
  97.  
  98.     rts
  99.  
  100. * ------------------------------------------------------------------------- *
  101.  
  102. start_up    movem.l    d0/a0,-(a7)
  103.  
  104.     suba.l    a1,a1
  105.     move.l    a1,wb_msg_p
  106.     movea.l    sys_base(pc),a6
  107.     jsr    _LVOFindTask(a6)
  108.     movea.l    d0,a4
  109.     move.l    d0,task_p
  110.  
  111.     tst.l    pr_CLI(a4)
  112.     bne.b    .exit
  113.  
  114.     lea.l    pr_MsgPort(a4),a0
  115.     movea.l    sys_base(pc),a6
  116.     jsr    _LVOWaitPort(a6)
  117.  
  118.     lea.l    pr_MsgPort(a4),a0
  119.     movea.l    sys_base(pc),a6
  120.     jsr    _LVOGetMsg(a6)
  121.     move.l    d0,wb_msg_p
  122.  
  123. .exit    movem.l    (a7)+,d0/a0
  124.  
  125.     rts
  126.  
  127. * ------------------------------------------------------------------------- *
  128.  
  129. close_down    tst.l    wb_msg_p
  130.     beq.b    .exit
  131.  
  132.     movea.l    sys_base(pc),a6
  133.     jsr    _LVOForbid(a6)
  134.  
  135.     movea.l    wb_msg_p(pc),a1
  136.     movea.l    sys_base(pc),a6
  137.     jsr    _LVOReplyMsg(a6)
  138.  
  139. .exit    rts
  140.  
  141. * ------------------------------------------------------------------------- *
  142.  
  143. sys_base    DC.L    0
  144. int_base    DC.L    0
  145. asl_base    DC.L    0,0
  146. wb_msg_p    DC.L    0
  147. task_p    DC.L    0
  148. window_p    DC.L    0
  149.  
  150. clip_flag    DC.B    0,0
  151.  
  152. ; IOClipReq structure
  153.  
  154. clip_iorq    DCB.W    25
  155.     DC.W    0
  156.  
  157. newwind0    NEWWINDOW    $a8,$0,$130,$b,$3,$0,IDCMP_CLOSEWINDOW,
  158. &        WFLG_ACTIVATE+WFLG_DRAGBAR+WFLG_DEPTHGADGET+WFLG_CLOSEGADGET+WFLG_RMBTRAP,
  159. &        $0,$0,ascii0,$0,$0,$0,$0,$0,$0,WBENCHSCREEN
  160.  
  161. ascii0    DC.B    "Keep ASL(CD) - Dave 'A' 93(94)",$0,0
  162.  
  163. int_name    DC.B    "intuition.library",$0
  164. asl_name    DC.B    "asl.library",$0
  165. clip_name    DC.B    "clipboard.device",$0,$0
  166.     DC.W    0
  167.  
  168. * ------------------------------------------------------------------------- *